﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;


namespace WindowsGame1
{
    enum biome { Herbe, Arbre, Eau, Lave, Roc, Glace, Rocher, Dalle , Toit, Statue, Neige, Ponton} ; /* le type de la case [@LK] les sprites des biomes de cette liste sont 
                                                              * a trouver(seulement les deux premier pour la première soutenance)
                                                              * énumeration a compléter */
    class Case
    {//ATTRIBUTS : 
        
        private biome nature ; //ici je ne fait que déclarer une variable de type biome qui sera la nature de la case
        private int altitude ;
        private bool occupée, circulable, allumée; // si il y a un personnage sur la case et est-ce qu'il peut y en avoir + [%LK]mettre la case en supbrillance si allumée vrai (dans ta fonction 
        private Personnage occupant ; // le personnage sur la case (impossible d'y accéder si "occupée" est fausse)
        Texture2D image;

     //METHODES : 
        public Case(Texture2D s) // crée la case par défaut un carré d'herbe au niveau zéro et innocupée
        {
            nature = biome.Herbe;
            altitude = 0;
            occupée = false;
            circulable = true;
            occupant = null;
            image = s;
        }
        public Case(biome nature_, int hauteur, Texture2D s) //permet de créer une case avec le biôme et l'altitude choisis
        {
            nature = nature_;
            altitude = hauteur;
            occupée = false;
            occupant = null;
            if (nature == biome.Herbe || nature == biome.Roc || nature == biome.Glace)
                circulable = true;
            else circulable = false;
            image = s;

        }

        public void retirer_perso() //retire un perso de la case entrée en paramètre
        {
            this.occupant = null;
            this.occupée = false;
        }
        public void changer_perso(Personnage perso)//ajoute ou change le perso sur la case
        {
            this.occupant = perso ;
            this.occupée = true;
        }
        
        public  Personnage  contient //les fonctions suivantes permettent de faire des copies locales des attributs

        { 
           get{ return this.occupant;}
            set {this.occupant = value;} 
        }
        public bool est_occupée
        {
            get {return this.occupée;}
        }
        public bool est_circulable
        {
            get { return this.circulable; }
            set { this.circulable = value; }
        }

        public bool lumière_case
        { get { return this.allumée ;}
          set { this.allumée = value; }
        }

        public Texture2D pic
        {
            get { return this.image; }
        }
    }
}